package com.synergy.stockflow.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
    * 日志，存储系统日志/操作日志/异常日志
    */
@Schema(description="日志，存储系统日志/操作日志/异常日志")
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "sys_log")
public class SysLog {
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    @Schema(description="")
    private Long id;

    /**
     * 日志类型, OPERATION, LOGIN, EXCEPTION, OTHER
     */
    @TableField(value = "log_type")
    @Schema(description="日志类型, OPERATION, LOGIN, EXCEPTION, OTHER")
    private String logType;

    /**
     * 操作标题
     */
    @TableField(value = "title")
    @Schema(description="操作标题")
    private String title;

    /**
     * 操作描述
     */
    @TableField(value = "`operation`")
    @Schema(description="操作描述")
    private String operation;

    /**
     * 方法名
     */
    @TableField(value = "`method`")
    @Schema(description="方法名")
    private String method;

    /**
     * 请求路径
     */
    @TableField(value = "request_url")
    @Schema(description="请求路径")
    private String requestUrl;

    @TableField(value = "request_method")
    @Schema(description="")
    private String requestMethod;

    /**
     * 请求参数（JSON）
     */
    @TableField(value = "params")
    @Schema(description="请求参数（JSON）")
    private String params;

    /**
     * 响应数据（JSON）
     */
    @TableField(value = "`result`")
    @Schema(description="响应数据（JSON）")
    private String result;

    /**
     * 操作状态 1=成功 0=失败
     */
    @TableField(value = "`status`")
    @Schema(description="操作状态 1=成功 0=失败")
    private Byte status;

    /**
     * 异常堆栈信息
     */
    @TableField(value = "error_msg")
    @Schema(description="异常堆栈信息")
    private String errorMsg;

    /**
     * 用户编号
     */
    @TableField(value = "user_id")
    @Schema(description="用户编号")
    private Long userId;

    /**
     * 用户名称
     */
    @TableField(value = "username")
    @Schema(description="用户名称")
    private String username;

    @TableField(value = "ip")
    @Schema(description="")
    private String ip;

    @TableField(value = "start_time")
    @Schema(description="")
    private Date startTime;

    @TableField(value = "end_time")
    @Schema(description="")
    private Date endTime;

    /**
     * 耗时（毫秒）
     */
    @TableField(value = "duration")
    @Schema(description="耗时（毫秒）")
    private Long duration;

    /**
     * 记录时间
     */
    @TableField(value = "create_time")
    @Schema(description="记录时间")
    private Date createTime;
}